Embodiments of the inventive subject matter generally relate to the field of computer processors, and, more particularly, to adaptively enabling and disabling snooping bus commands.
A current trend of computer architecture is increasing the number of core processors in a multi-core symmetrical multi-processor (SMP). In a high performance server chip, there typically can be eight or more SMP cores. The growth in the number of cores on a single chip brings many new challenges for chip design. Chip footprints are bigger and there are many more bus requesters. Thus, it takes longer to broadcast commands to all snooper agents on a snoop bus. Power consumption is another major factor in chip design, as adding core processors to a chip increases the power requirements of the chip.
In snoop based cache coherency design, all the coherent memory accesses are seen by all snooper entities (e.g., caches and memory controllers). To improve latency for critical memory accesses (i.e. demand load), the concept of fastpath (FP) was created. Memory accesses that are considered critical (e.g., demand loads) that need to go on a fabric bus to complete are referred to as eligible FP commands. Eligible FP commands are broadcast on a specially engineered bus (FP bus) to all the snoopers (typically caches and memory controllers) that may provide data in response to the command. A command that goes on the FP bus is referred to as an FP command. FP allows critical memory accesses to bypass arbitration logic and queuing structures to reduce latency. In addition, optimal engineering of an FP bus minimizes wire delay so that a FP command can reach all the pertinent snoopers on a chip in a shortest time.
Depending on the data stream and applications running, data accessed by an FP command can either be in memory or caches. Some processors and cache systems can implement early data intervention processes. Early data intervention refers to the ability of a cache to supply data in response to a command using the fastpath bus. Depending on how data is shared, a cache may or may not be able to provide early data intervention even if it has the cache line. Thus an implementation of fastpath that blindly responds to all FP commands wastes directory read bandwidth and unnecessarily consumes power reading the cache directory for FP commands in cases where the cache cannot send data for early data intervention.